package com.bflow.api;

import com.bflow.api.bo.BflowDefineActRouteBo;
import com.bflow.api.constant.BflowConstant.CommStatus;
import com.bflow.commons.consts.CommConst;
import com.bflow.commons.exception.BizException;
import com.bflow.commons.po.BasePo;
import com.bflow.commons.service.IBaseService;

import java.io.Serializable;
import java.util.List;

/**
 * 功能：BflowDefineActRoute 活动路由-业务接口
 * 作者：haowen
 * 日期：2018-12-13
 */
public interface IBflowDefineActRouteService<P extends BasePo, B extends Serializable> extends IBaseService<P, B> {

    /**
     * 增加
     * @param bflowDefineActRouteBo
     */
    void add(BflowDefineActRouteBo bflowDefineActRouteBo) throws BizException;

    /**
     * 批量新增
     * @param entities 实体集合
     */
    void batchInsert(List<BflowDefineActRouteBo> entities, String procId, Integer version) throws BizException;

    /**
     * 批量 删除
     * @param procId
     * @param version
     * @throws BizException
     */
    void batchDel(String procId, Integer version) throws BizException;

    /**
     * 获取 活动路由 列表
     * @param procKey
     * @param status 可缺省为空
     * @return
     * @throws BizException
     */
    List<BflowDefineActRouteBo> findListByProcKey(String procKey, CommStatus status) throws BizException;

    /**
     * 获取 活动路由 列表
     * @param actId
     * @param procId
     * @param status 可缺省为空
     * @return
     * @throws BizException
     */
    List<BflowDefineActRouteBo> findListByProcId(String actId, String procId, CommStatus status) throws BizException;

    /**
     * 获取 活动路由 列表
     * @param procId
     * @param version 版本号
     * @return
     * @throws BizException
     */
    List<BflowDefineActRouteBo> findListByProcId(String procId, Integer version) throws BizException;

    /**
     * 获取 活动路由 列表
     * @param procId
     * @return
     * @throws BizException
     */
    List<BflowDefineActRouteBo> findListByProcId(String procId) throws BizException;

    /**
     * 获取路由详情
     * @param routeId
     * @return
     * @throws BizException
     */
    BflowDefineActRouteBo getRouteItemById(String routeId) throws BizException;

    /**
     * 定义按活动顺序设置的默认活动路由
     * @param actSet 活动集合
     * @param procId 流程ID
     * @param version 流程版本
     * @throws BizException
     */
    void setDefaultActRoute(String[] actSet, String procId, Integer version) throws BizException;
}
